<!--
     Same as TimelinePage.html, but needs to manage visibility of ComposeBox itself
     without a div wrapper due to sticky-positioned compose button.
     TODO: this is a bit hacky due to code duplication
 -->
<h1 class="sr-only">{headingLabel}</h1>
<div class="timeline-home-page" aria-busy={hideTimeline}>
  {#if hidePage}
    <LoadingPage />
  {/if}
  <LazyComposeBox realm="home" hidden={hidePage}/>
  <div class="timeline-home-anchor-container">
    {#if !hidePage && hideTimeline}
      <LoadingPage />
    {/if}
    <div class="timeline-home-reveal-container {hideTimeline ? 'hidden' : ''}">
      <LazyTimeline timeline="home" />
    </div>
  </div>
</div>
<style>
  .timeline-home-page, .timeline-home-anchor-container {
    position: relative;
  }
  .timeline-home-reveal-container {
    transition: opacity 0.2s linear; /* main page reveal */
  }
</style>
<script>
  import LazyTimeline from './timeline/LazyTimeline.html'
  import { store } from '../_store/store.js'
  import LoadingPage from './LoadingPage.html'
  import LazyComposeBox from './compose/LazyComposeBox.html'
  import { formatIntl } from '../_utils/formatIntl.js'

  export default {
    oncreate () {
      this.store.set({
        timelineInitialized: false,
        timelinePreinitialized: false
      })
    },
    computed: {
      hidePage: ({ $timelineInitialized, $timelinePreinitialized }) => !$timelineInitialized && !$timelinePreinitialized,
      hideTimeline: ({ $timelineInitialized }) => !$timelineInitialized,
      headingLabel: ({ $currentInstance }) => formatIntl('intl.homeOnInstance', { instance: $currentInstance })
    },
    store: () => store,
    components: {
      LazyComposeBox,
      LazyTimeline,
      LoadingPage
    }
  }
</script>
